#!/usr/bin/env python
#-*- coding:utf-8   -*-
import math

# PID参数
Kp = 0
Ki = 0
Kd = 0

# 控制器设置
setpoint = 0  # 设定值
process_value = 0  # 过程值
error = 0  # 误差
last_error = 0  # 上一次误差
integral = 0  # 积分项
derivative = 0  # 微分项

# 系统参数
K = 1  # 系统增益
tau = 1  # 系统时间常数
delta_t = 0.01  # 采样时间

# Cohen-Coon方法计算PID参数
def cohen_coon():
    P = 1.35 * tau
    I = 2.5 * tau
    D = 0.35 * tau

    global Kp, Ki, Kd
    Kp = (1.2 * (tau / K)) / P
    Ki = Kp / I
    Kd = Kp * D

# 计算PID控制器输出
def pid_controller():
    global error, last_error, integral, derivative
    error = setpoint - process_value
    integral += error * delta_t
    derivative = (error - last_error) / delta_t

    output = Kp * error + Ki * integral + Kd * derivative

    last_error = error

    return output

'''
说明：

以上两份代码实现了使用 Cohen-Coon 方法计算 PID 参数，
然后根据设定值和过程值计算 PID 控制器输出，并模拟系统响应过程。
两份代码基本一致，不同之处仅在于语法上的差异。
'''
